MIUI security components.apk(点击下载) / AvlEngine.java


package com.miui.guardprovider.engine.antiy;

import android.content.pm.PackageInfo;
import android.text.TextUtils;
import android.util.Log;
import com.avl.engine.AVLAppInfo;
import com.avl.engine.AVLEngine;
import com.avl.engine.AVLSdkConfig;
import com.miui.guardprovider.GuardApplication;
import com.miui.guardprovider.aidl.VirusInfo;
import com.miui.guardprovider.d.f;
import com.miui.guardprovider.d.g;
import com.miui.guardprovider.engine.AbsEngine;
import com.miui.guardprovider.engine.EngineDesc;
import java.util.ArrayList;
import java.util.List;
import miui.os.Build;
import org.json.JSONObject;

public class AvlEngine extends AbsEngine {
    private static final int AVL_CHECK_UPDATE_HAS_NO_UPDATE = 0;
    private static final int AVL_CHECK_UPDATE_HAS_UPDATE = 1;
    private static final String AVL_ENGINE_RESULT_DANGER = "AVL:danger;";
    private static final String AVL_ENGINE_RESULT_SAFE = "AVL:safe;";
    private static final int AVL_INIT_SUCCESS = 0;
    private static final String PROXY_LOG_UPLOAD_URI = "https://log.avlyun.sec.intl.miui.com/logupload";
    public static final String SP_AVL_ENGINE_NAME = "AVL";
    private static final String TAG = "AvlEngine";
    private static boolean mGlobalInit = false;

    public AvlEngine(EngineDesc engineDesc) {
        super(engineDesc);
    }

    private int getAvlVirusType(int i) {
        if (i != 1) {
            return i != 2 ? 1 : 3;
        }
        return 2;
    }

    private String getDescriptionByVirusName(String str) {
        if (TextUtils.isEmpty(str)) {
            return "";
        }
        String[] descriptionByVirusName = AVLEngine.getDescriptionByVirusName(getContext(), str);
        StringBuilder sb = new StringBuilder();
        if (descriptionByVirusName[0] != null && descriptionByVirusName[0].startsWith("pay:") && !"pay:".equals(descriptionByVirusName[0])) {
            sb.append(descriptionByVirusName[0].substring(4));
        }
        if (descriptionByVirusName[1] != null && descriptionByVirusName[1].startsWith("prv:") && !"prv:".equals(descriptionByVirusName[1])) {
            if (sb.length() > 0) {
                sb.append("\n");
            }
            sb.append(descriptionByVirusName[1].substring(4));
        }
        if (descriptionByVirusName[2] != null && descriptionByVirusName[2].startsWith("behavior:") && !"behavior:".equals(descriptionByVirusName[2])) {
            if (sb.length() > 0) {
                sb.append("\n");
            }
            sb.append(descriptionByVirusName[2].substring(9));
        }
        return sb.toString();
    }

    private VirusInfo getVirusInfo(AVLAppInfo aVLAppInfo, String str) {
        VirusInfo virusInfo = new VirusInfo();
        int i = 0;
        String str2 = "";
        if (aVLAppInfo != null) {
            PackageInfo a2 = g.a(getContext(), aVLAppInfo.getPath());
            virusInfo.packageName = a2 == null ? str2 : a2.packageName;
            if (a2 != null) {
                i = a2.versionCode;
            }
            virusInfo.versionCode = i;
            if (a2 != null) {
                str2 = a2.versionName;
            }
            virusInfo.versionName = str2;
            virusInfo.path = aVLAppInfo.getPath();
            virusInfo.engineName = getEngineName();
            virusInfo.virusName = aVLAppInfo.getVirusName();
            virusInfo.virusDescription = getDescriptionByVirusName(virusInfo.virusName);
            virusInfo.virusLevel = getAvlVirusType(aVLAppInfo.getDangerLevel());
            virusInfo.virusType = 1;
            int i2 = virusInfo.virusLevel;
            if (i2 == 2 || i2 == 3 || i2 == 6) {
                Log.i(TAG, "getVirusInfo packageName : " + virusInfo.packageName + " virusLevel : " + virusInfo.virusLevel);
                virusInfo.extras = AVL_ENGINE_RESULT_DANGER;
                return virusInfo;
            }
        } else {
            virusInfo.packageName = str2;
            virusInfo.versionCode = 0;
            virusInfo.versionName = str2;
            virusInfo.path = str;
            virusInfo.engineName = getEngineName();
            virusInfo.virusName = str2;
            virusInfo.virusDescription = str2;
            virusInfo.virusLevel = 1;
            virusInfo.virusType = 1;
        }
        virusInfo.extras = AVL_ENGINE_RESULT_SAFE;
        return virusInfo;
    }

    private void setCloudScanEnabled(boolean z) {
        AvlEngineUtils.setCloudScanEnabled(z);
    }

    private void setRegion() {
        AVLEngine.setRegion(Build.getRegion());
        if (GuardApplication.c) {
            Log.d(TAG, "region is " + Build.getRegion());
        }
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void cancelScan() {
        this.mIsCanceled = true;
        if (AvlEngineUtils.stopAVLRiskScan() < 0) {
            Log.e(TAG, "AVL RISK Cancel error");
        }
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void checkUpdate(AbsEngine.OnUpdateCheckListener onUpdateCheckListener) {
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void clean() {
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public int cloudScan(List<String> list, AbsEngine.OnVirusEngineScanListener onVirusEngineScanListener) {
        return 1;
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public String getEngineVersion() {
        return AVLEngine.GetEngineVersion();
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void init(AbsEngine.OnInitCompleteListener onInitCompleteListener) {
        int i;
        synchronized (AvlEngine.class) {
            if (!mGlobalInit) {
                try {
                    setEnableConnectNetwork(enableConnectNetwork());
                    setRegion();
                    i = AVLEngine.init(getContext(), Build.IS_INTERNATIONAL_BUILD ? new AVLSdkConfig.Builder().setLogUploadUrl(PROXY_LOG_UPLOAD_URI).build() : null);
                } catch (Throwable th) {
                    Log.e(TAG, "AVL init error !", th);
                    i = -1;
                }
                if (i == 0) {
                    mGlobalInit = true;
                }
                if (!Build.IS_INTERNATIONAL_BUILD) {
                    if (AvlEngineUtils.initAVLRisk(getContext()) == 0) {
                        Log.e(TAG, "AVL RISK init error !");
                    } else {
                        Log.d(TAG, "AVL RISK init success");
                    }
                }
            }
        }
        if (mGlobalInit) {
            onInitCompleteListener.onInitComplete(0);
        } else {
            onInitCompleteListener.onInitFail(-1);
        }
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public boolean isNeedInit() {
        return !mGlobalInit;
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public boolean isSupportCloudScan() {
        return !Build.IS_INTERNATIONAL_BUILD;
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void release() {
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void scan(List<String> list, AbsEngine.OnVirusEngineScanListener onVirusEngineScanListener) {
        scan(list, onVirusEngineScanListener, false);
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void scan(List<String> list, AbsEngine.OnVirusEngineScanListener onVirusEngineScanListener, boolean z) {
        scan(list, onVirusEngineScanListener, z, null);
    }

    /* JADX WARNING: Removed duplicated region for block: B:20:0x0058  */
    /* JADX WARNING: Removed duplicated region for block: B:25:0x006c A[SYNTHETIC, Splitter:B:25:0x006c] */
    @Override // com.miui.guardprovider.engine.AbsEngine
    public void scan(List<String> list, AbsEngine.OnVirusEngineScanListener onVirusEngineScanListener, boolean z, String str) {
        String str2;
        VirusInfo virusInfo;
        VirusInfo virusInfo2;
        if (onVirusEngineScanListener == null) {
            Log.e(TAG, "ERROR ! AVL SCAN EXIT caused by null listener");
            return;
        }
        this.mIsCanceled = false;
        setEnableConnectNetwork(enableConnectNetwork());
        setCloudScanEnabled(z);
        ArrayList arrayList = new ArrayList();
        int size = list.size();
        int i = 0;
        for (String str3 : list) {
            if (!this.mIsCanceled) {
                AVLAppInfo aVLAppInfo = null;
                try {
                    if (!TextUtils.isEmpty(str)) {
                        str2 = new JSONObject(str).optString("installPackage");
                        i++;
                        if (this.mScanType != AbsEngine.ScanType.VIRUS_TYPE) {
                            aVLAppInfo = TextUtils.isEmpty(str2) ? AvlEngineUtils.scan(str3) : AvlEngineUtils.scan(str3, str2);
                        } else {
                            try {
                                virusInfo2 = AvlEngineUtils.scanRisk(getContext(), getEngineName(), str3);
                            } catch (Exception e) {
                                Log.e(TAG, "AvlEngine scan risk error", e);
                                virusInfo2 = null;
                            }
                            if (virusInfo2 != null) {
                                virusInfo = virusInfo2;
                                arrayList.add(virusInfo);
                                onVirusEngineScanListener.onScanProgress(0, i, size, new VirusInfo[]{(VirusInfo) arrayList.get(i - 1)});
                            }
                        }
                        virusInfo = getVirusInfo(aVLAppInfo, str3);
                        arrayList.add(virusInfo);
                        onVirusEngineScanListener.onScanProgress(0, i, size, new VirusInfo[]{(VirusInfo) arrayList.get(i - 1)});
                    }
                } catch (Exception e2) {
                    Log.e(TAG, "get callPackage error : ", e2);
                }
                str2 = null;
                i++;
                if (this.mScanType != AbsEngine.ScanType.VIRUS_TYPE) {
                }
                virusInfo = getVirusInfo(aVLAppInfo, str3);
                arrayList.add(virusInfo);
                onVirusEngineScanListener.onScanProgress(0, i, size, new VirusInfo[]{(VirusInfo) arrayList.get(i - 1)});
            } else {
                return;
            }
        }
        onVirusEngineScanListener.onScanFinished(false);
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void setEnableConnectNetwork(boolean z) {
        AVLEngine.setNetworkEnabled(z);
        AvlEngineUtils.setAVLRiskEnableConnectNetwork(z);
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void stopUpdate() {
        AVLEngine.StopUpdate();
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public void update(AbsEngine.OnUpdateListener onUpdateListener) {
        setEnableConnectNetwork(enableConnectNetwork());
        setRegion();
        int CheckUpdate = AVLEngine.CheckUpdate();
        if (GuardApplication.c) {
            Log.i(TAG, "checkUpdate error code = " + CheckUpdate);
        }
        int i = 3;
        if (CheckUpdate != 0) {
            CheckUpdate = AVLEngine.Update();
            if (GuardApplication.c) {
                Log.i(TAG, "update error code = " + CheckUpdate);
            }
            if (onUpdateListener == null) {
                return;
            }
            if (CheckUpdate > 0) {
                i = 0;
            } else if (CheckUpdate != 0) {
                i = 2;
            }
        } else if (onUpdateListener == null) {
            return;
        }
        onUpdateListener.onUpdateFinished(i, CheckUpdate);
    }

    @Override // com.miui.guardprovider.engine.AbsEngine
    public int urlMethod(int i, String str) {
        if (i == 1) {
            return AVLEngine.scanURL(str);
        }
        if (i != 2) {
            return -2;
        }
        int updateURLRule = AVLEngine.updateURLRule();
        if (1 != updateURLRule) {
            return updateURLRule;
        }
        Log.w(TAG, "avl url db version = " + AVLEngine.getURLDatabaseVersion());
        f.a().a("avl_url_sdk_version", AVLEngine.getURLDatabaseVersion());
        return updateURLRule;
    }
}